package com.example.plantuml.tools;


import org.springframework.util.StringUtils;

/**
 * 包路径转换为切入点表达式的工具类
 */
public class PackagePointcutUtils {

    /**
     * 将多个包路径转换为AspectJ切入点表达式
     *
     * @param packages 多个包路径，用逗号分隔
     * @return 整合后的切入点表达式，如"execution(* com.example.controller..*(..)) || execution(* com.example.service..*(..))"
     */
    public static String convertPackagesToPointcut(String packages) {
        if (!StringUtils.hasText(packages)) {
            return "";
        }

        StringBuilder pointcut = new StringBuilder();
        String[] packageArray = packages.split(",");

        for (int i = 0; i < packageArray.length; i++) {
            String pkg = packageArray[i].trim();
            if (StringUtils.hasText(pkg)) {
                // 每个包生成对应的execution表达式：execution(* 包名..*(..))
                pointcut.append("execution(* ").append(pkg).append("..*(..))");
                // 多个包之间用||连接
                if (i < packageArray.length - 1) {
                    pointcut.append(" || ");
                }
            }
        }

        return pointcut.toString();
    }
}
